package main

import "fmt"

/*
// 静态声明：先声明再使用  c、java
// 动态声明：在使用时声明  python、php
// 单独声明变量 var 变量名 变量类型
var name string
var age int
var isOK bool
*/

/*
Go语言中推荐小驼峰式命名：var userName string
常见的命名方式：
var user_name string  // 下划线链接
var userName string   // 小驼峰
var UserName string   // 大驼峰
*/

// 批量声明变量
// 全局变量
var (
	// 注意，不要添加","逗号
	// 类型对应初始值
	name string // ""
	age  int    // 0
	isOK bool   // false
)

func main() {
	// 赋值
	name = "致幻"
	age = 28
	isOK = true
	// Go语言中非全局变量声明后必须使用，声明未使用编译会报错，与JavaScript语言类似
	// 局部变量
	var job string
	// 使用变量
	fmt.Print(isOK) // 打印后不换行"
	fmt.Println()
	fmt.Printf("name：%s\n", name) // 格式化后打印,%s占位符，使用name变量的值填充占位符
	fmt.Println(age)              //打印后换行
	job = "Tester"
	fmt.Println(job)

	// 声明变量同时赋值
	var s1 string = "xxx"
	fmt.Println(s1)

	// 类型推导（根据值判断变量类型）
	var s2 = "zhihuan"
	fmt.Println(s2)

	// 简短变量声明（只能在函数中使用）
	s3 := "哈哈哈"
	fmt.Println(s3)

	// s1 := "xxni"  //同一个作用域中不能重复声明同名变量
	// 匿名变量"_"（也叫哑元变量），作用：不接收的值
}
